/***************************************************************************************************
  Copyright(C)   2011-2013
  All rights reserved.
  File Name: ceudpsocket.h

  Description:
        CE是一个路线播放列表编辑工具，设定列车行驶路线的播放列表，它CE与SLCD通信的原因是为了在win下，CE操作人员设定线路播放列表时，可以随时查看设定的列表在车上的运行效果，
     所以，CE要模拟出ＴＩＳ通信协议，而SLCD则通过协议来进行播放，以便让操作人员查看实际运行效果
        CE通信的实际操作模块，CE通信的主要是模拟TIS协议，让SLCD在win下模拟出在列车上的运行效果
  ***************************************************************************************************/

#ifndef CEUDPSOCKET_H
#define CEUDPSOCKET_H

#include <QUdpSocket>

#include "environment.h"
#include "public/routemsg.h"

#ifdef Q_OS_WIN32
#include <windows.h>
#include <sys/types.h>
#endif

class CeUdpSocket : public QUdpSocket
{
    Q_OBJECT
public:
    explicit CeUdpSocket(const quint16 port, QObject *parent = 0);
    ~CeUdpSocket();

private:
    quint16 m_port;


private:
    void init();
    void sendRouteAck(const UBYTE result);
    void ctlPIDSAck(const UBYTE type, const UBYTE result);

signals:
    void receRouteMsg(const PIDS_RouteMsg&);
    void receCtlCmd(const PIDS_ControlPIDS&);

public slots:
    void recv_slot();

    void timeOut();

};

#endif // CEUDPSOCKET_H
